package com.example.yingpianguangli.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;

@Data // 提供所有的getter和setter, equals, canEqual, hashCode 和 toString 方法
@NoArgsConstructor // 提供无参构造函数
@AllArgsConstructor // 提供全参构造函数
/**
 * SysCinema类代表系统中的一个电影院实体
 * 它包含了电影院的相关信息，如电影院ID、名称、放映厅类别列表、图片、地址、电话以及营业时间
 * 此外，它还包含了当前影院上映的所有电影列表
 * 实现Serializable接口以支持对象的序列化和反序列化
 */
public class SysCinema implements Serializable {
    // 序列化ID，用于序列化和反序列化时确保类的一致性
    private final static Long serialVersionUID = 1L;

    // 电影院ID，唯一标识一个电影院
    private Long cinemaId;

    // 电影院名称，使用NotBlank注解确保名称不为空
    @NotBlank(message = "影院名称不能为空")
    private String cinemaName;

    // 放映厅类别列表，描述电影院中包含的放映厅类型
    private String hallCategoryList;

    // 电影院图片，存储电影院的图片路径或URL
    private String cinemaPicture;

    // 电影院地址，描述电影院的地理位置
    private String cinemaAddress;

    // 电影院电话，用于联系电影院
    private String cinemaPhone;

    // 工作开始时间，使用JsonFormat注解格式化为HH:mm形式
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "HH:mm")
    private String workStartTime;

    // 工作结束时间，使用JsonFormat注解格式化为HH:mm形式
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "HH:mm")
    private String workEndTime;

    // 当前影院上映的所有电影列表，包含从今天起未来5天内有安排场次的电影
    private List<SysMovie> sysMovieList;
}

